package com.cmc.cloud.cmclink.doc.rpcservice;

import java.util.List;

import com.cmc.cloud.cmclink.bdt.api.base.dto.resp.TerminalListByCodeRespDTO;
import com.cmc.cloud.cmclink.svl.api.base.req.BargePolPodReqDTO;import com.cmc.cloud.cmclink.svl.api.base.req.BargeRotationCreateDTO;
import com.cmc.cloud.cmclink.svl.api.base.resp.BargePolAndPodRespDTO;import com.cmc.cloud.cmclink.svl.api.base.resp.BargeRotationRespVO;

/**
 * 码头基础数据转换
 * 
 * @author dev89
 * @date 2025/07/18 09:00
 */
public interface TerminalTransferService {

    /**
     * 通过码头代码获取码头名称信息
     *
     * @param terminalCode 码头代码列表
     * @return 码头信息列表
     */
    List<TerminalListByCodeRespDTO> queryTerminalByCode(List<String> terminalCode);

    /**
     * 通过港口代码获取码头名称信息
     *
     * @param portCode 港口代码
     * @return 码头信息列表
     */
    List<TerminalListByCodeRespDTO> queryTerminalByPortCode(String portCode);

    /**
     * 船期查询
     *
     * @param bargeType bargeType
     * @param portCode portCode
     * @param vesselCode vesselCode
     * @param voyageEx voyageEx
     * @param voyageIm voyageIm
     * @return boolean
     */
    boolean existBargeRotation(String bargeType, String vesselCode, String portCode, String voyageEx, String voyageIm);

    /**
     * 船期查询
     *
     * @param bargeType bargeType
     * @param portCode portCode
     * @param vesselCode vesselCode
     * @param voyageEx voyageEx
     * @param voyageIm voyageIm
     * @return BargeRotationRespVO
     */
    BargeRotationRespVO getBargeRotation(String bargeType, String vesselCode, String portCode, String voyageEx,
        String voyageIm);

    /**
     * 创建船期
     *
     * @param bargeRotationCreateDTO bargeRotationCreateDTO
     */
    void insertBargeRotation(BargeRotationCreateDTO bargeRotationCreateDTO);

    /**
     * 查询船代码
     *
     * @param name 中文或者英文名
     * @param partnerCode 合作方代码
     * @param bargeType 交通工具类型:（0：火车（TRAIN）；1：驳船（BARGE）；2：卡车（TRUCK））
     * @return 船代码
     */
    String getBargeVesselCode(String name, String partnerCode, String bargeType);

    /**
     * 查询船代码
     *
     * @param bargePolPodReqDto 参数
     * @return BargePolAndPodRespDTO
     */
    BargePolAndPodRespDTO getBargePolAndPod(BargePolPodReqDTO bargePolPodReqDto);
}
